home *** CD-ROM | disk | FTP | other *** search
/ Singles Flirt Up Your Life! (German) / Singles Flirt Up Your Life.iso / data1.cab / Statemachine / tableChar.lua < prev    next >
Text File  |  2004-01-29  |  3KB  |  105 lines

  1. -- table character state machine
  2. beginStateMachine()
  3.     
  4.     onEnter(function(msg)
  5.     
  6.         print("table character state machine onEnter");
  7.         local table = getStateObjectFromID(msg.sender);
  8.         storeStateObject("table", table);
  9.         
  10.         if (table) then
  11.             --table does exist
  12.             if (getParent().isOneActionPointLocked(table)) then
  13.                 -- action point is locked
  14.                 getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  15.                 sendMsg("emoThink", getParent().walkSO);
  16.                 exitStateMachine();
  17.             else
  18.                 getParent().lockActionPoints(table);                
  19.             end
  20.         else
  21.             -- chair does not exist anymore
  22.             getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  23.             sendMsg("emoThink", getParent().walkSO);
  24.             exitStateMachine();
  25.         end
  26.         
  27.         freeHands(getParent());
  28.                 
  29.     end )
  30.     
  31.     onExit(function(msg)
  32.         local table = retrieveStateObject("table");
  33.         getParent().unlockActionPoints(table);
  34.         removeStateObject("table");
  35.     end )
  36.     
  37.         
  38.         
  39.     -- clean up  table
  40.     state("clean")
  41.     
  42.         onEnter(function(msg)
  43.             -- grab sponge
  44.             local sponge = getParent().loadGameObject("StandardGO","sponge");
  45.             getParent().attachRightObjectHolder(sponge);
  46.             storeStateObject("sponge", sponge);
  47.             
  48.             local table = retrieveStateObject("table");
  49.             local clean = getParent().startActivity("clean", table);
  50.             local length, scale = getActivityLength(clean);
  51.             storeData("scale", scale);
  52.                         
  53.             startAnimation("cleanTableLoop", false, scale);    
  54.             table.playSound("cleanSink");
  55.                     
  56.             --sendDelayedMsgThis("complete", length);
  57.             --this.actionComplete();
  58.         end )
  59.         
  60.         onExit(function(msg)
  61.             local table = retrieveStateObject("table");
  62.             table.stopSound("cleanSink");
  63.         end )
  64.  
  65. --        onMsg("cancel", function(msg)
  66. --            -- remove sponge
  67. --            local sponge = getParent().getRightHeldObject()
  68. --            getParent().detachRightObjectHolder();
  69. --            if (sponge) then sponge.deleteGameObject(); end
  70. --            
  71. --            getParent().stopActivity("clean", retrieveStateObject("table"));
  72. --            exitStateMachine();
  73. --        end )    
  74. --    
  75. --        onMsg("gueue", function(msg)
  76. --            sendMsgThis("complete");
  77. --        end )    
  78.  
  79.         onMsg("complete", function(msg)
  80.             -- remove sponge
  81.             local sponge = getParent().getRightHeldObject()
  82.             getParent().detachRightObjectHolder();
  83.             if (sponge) then sponge.deleteGameObject(); end
  84.             
  85.             getParent().stopActivity("clean", retrieveStateObject("table"));
  86.             if (not testCancel()) then queueNextClean(getParent()) end;
  87.             exitStateMachine();
  88.         end )    
  89.     
  90.         onMsg("end", function(msg)
  91.             local table = retrieveStateObject("table");
  92.             local dirt = table.getDirtiness();
  93.             if (testCancel() or dirt<0.01) then
  94.                 sendMsgThis("complete");
  95.             else
  96.                 local scale = retrieveData("scale");
  97.                 startAnimation("cleanTableLoop", false, scale);            
  98.                 table.playSound("cleanSink");
  99.                 clean(table, CLEAN_PER_LOOP);            
  100.             end
  101.         end )    
  102.         
  103.         
  104.     
  105. endStateMachine()